package price;

import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * Created by wangxingsheng on 2019/4/15.
 * desc: 此文件只负责价格相关的操作
 */
public class PriceUtil {

    public static void main(String[] args) {
        String moneyStr1 = "1,215,672,128.90";
//        String moneyStr2 = "12,121,212,121,212,121,121,212,121,212,121,215,678.90";
//        String moneyStr3 = "12,121,212,121,212,121,121,212,121,212,121,215,677.80";
//        String numberStr = "1282732211112121212121728399987823782345678.90";
        System.out.println(subAfterFirstDot(moneyStr1));
//        System.out.println(money2number(moneyStr2));
//        System.out.println(money2number(moneyStr2).subtract(money2number(moneyStr3)));
//        System.out.println(number2Money(numberStr, 3));
//        System.out.println(number2Money(numberStr, 0));
//        System.out.println(subZeroAndDot(numberStr));

    }

    /**
     * 去掉第一个.和后面所有的内容
     *
     * @param str 需要处理的数据
     * @return 处理完成的数据
     */
    public static String subAfterFirstDot(String str) {
        final String dot = ".";
        if (str.contains(dot)) {
            int index = str.indexOf(dot);
            return str.substring(0, index);
        }
        return str;
    }

    /**
     * 带逗号的货币展示格式(不带￥的) -> BigDecimal
     * 价格的运算使用
     * add（+），subtract（-）
     */
    public static BigDecimal money2number(String money) {
        try {
            return new BigDecimal(money.replace(",", ""));
        } catch (Exception e) {
            return BigDecimal.ZERO;
        }
    }

    /**
     * 将每三个数字加上逗号处理（带逗号的货币展示格式）
     *
     * @param str     需要处理的字符串
     * @param zeroNum 精确到几位小数
     * @return 处理完之后的字符串
     */
    public static String number2Money(String str, int zeroNum) {
        DecimalFormat decimalFormat = new DecimalFormat(",###");
        decimalFormat.setMinimumFractionDigits(zeroNum);
        decimalFormat.setMinimumIntegerDigits(1);
        return decimalFormat.format(new BigDecimal(str));
    }

    /**
     * 去掉结尾的多余的0 和 .
     */
    public static String subZeroAndDot(String str) {
        try {
            if (str.indexOf(".") > 0) {
                str = str.replaceAll("0+?$", "");//去掉多余的0
                str = str.replaceAll("[.]$", "");//如最后一位是.则去掉
            }
            return str;
        } catch (Exception e) {
            e.printStackTrace();
            return str;
        }
    }
}
